﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using DevComponents.DotNetBar;

namespace QLHPHP
{
    public partial class QuanLyMonHocControl : UserControl
    {
        public QuanLyMonHocControl()
        {
            InitializeComponent();
        }

        private AppCommands _Commands;
        /// <summary>
        /// Gets or sets the commands associated with the control.
        /// </summary>
        public AppCommands Commands
        {
            get { return _Commands; }
            set
            {
                if (value != _Commands)
                {
                    AppCommands oldValue = _Commands;
                    _Commands = value;
                    OnCommandsChanged(oldValue, value);
                }
            }
        }
        /// <summary>
        /// Called when Commands property has changed.
        /// </summary>
        /// <param name="oldValue">Old property value</param>
        /// <param name="newValue">New property value</param>
        protected virtual void OnCommandsChanged(AppCommands oldValue, AppCommands newValue)
        {
            if (newValue != null)
            {
                buttonDong.Command = newValue.QuanLyMonHocCommands.Cancel;
            }
            else
            {
                buttonDong.Command = null;
            }
        }

        private void QuanLyMonHocControl_Load(object sender, EventArgs e)
        {
            LoadDSMonHoc();
            bindingMH();

            LoadDSLoaiMon();
        }

       

        private void LoadDSMonHoc()
        {
            dgvDSMonHoc.DataSource = MonHoc.LayDSMonHoc();
        }
        private void LoadDSLoaiMon()
        {
            dgvDSLoaiMon.DataSource = LoaiMon.LayDSLoaiMon();
        }

        private void bindingMH()
        {
            txtMaMonHoc.DataBindings.Clear();
            txtMaMonHoc.DataBindings.Add("Text", dgvDSMonHoc.DataSource, "MaMonHoc");

            txtTenMonHoc.DataBindings.Clear();
            txtTenMonHoc.DataBindings.Add("Text", dgvDSMonHoc.DataSource, "TenMonHoc");

            txtMaLoaiMon.DataBindings.Clear();
            txtMaLoaiMon.DataBindings.Add("Text", dgvDSMonHoc.DataSource, "MaLoaiMon");

            txtTCLT.DataBindings.Clear();
            txtTCLT.DataBindings.Add("Text", dgvDSMonHoc.DataSource, "TCLT");

            txtTCTH.DataBindings.Clear();
            txtTCTH.DataBindings.Add("Text", dgvDSMonHoc.DataSource, "TCTH");

            txtTongSoTC.DataBindings.Clear();
            txtTongSoTC.DataBindings.Add("Text", dgvDSMonHoc.DataSource, "SoDVHT");

        }
       
        private void dgvDSMonHoc_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                string mamh = dgvDSMonHoc.CurrentRow.Cells[0].Value.ToString();
                dgvDSNganh.DataSource = Nganh.LayNganhTheoMaMonHoc(mamh);
                //dgvDSHKNH.DataSource = MonHoc.LayHKNHTheoMaMonHoc(mamh);
                lblHocKy.DataBindings.Clear();
                lblHocKy.DataBindings.Add("Text", MonHoc.LayHKNHTheoMaMonHoc(mamh), "HocKy");
                lblHanDK.DataBindings.Clear();
                lblHanDK.DataBindings.Add("Text", MonHoc.LayHKNHTheoMaMonHoc(mamh), "HanDK");
                lblNamHoc.DataBindings.Clear();
                lblNamHoc.DataBindings.Add("Text", MonHoc.LayHKNHTheoMaMonHoc(mamh), "NamHoc");
            }
            catch
            {
            }
           
        }

        private void btnNhapLai_Click(object sender, EventArgs e)
        {
            try
            {
                txtMaMonHoc.Text = "";
                txtTenMonHoc.Text = "";
                txtMaLoaiMon.Text = "";
                txtTCLT.Text = "";
                txtTCTH.Text = "";
                txtTongSoTC.Text = "";
               
            }
            catch
            {
                
            }
        }

        private void btnThem_Click(object sender, EventArgs e)
        {
            if(txtMaMonHoc.Text=="")
            {
                ToastNotification.Show(this, "Chưa nhập mã môn học");
            }
            else if(txtTenMonHoc.Text=="")
            {
                ToastNotification.Show(this, "Chưa nhập tên môn học");
            }
            else if (txtMaLoaiMon.Text == "")
            {
                ToastNotification.Show(this, "Chưa nhập mã loại môn");
            }
            else if (txtTCLT.Text == "")
            {
                ToastNotification.Show(this, "Nhập số tín chỉ lý thuyết nữa chứ!");
            }
            else if (txtTCTH.Text == "")
            {
                ToastNotification.Show(this, "Chưa nhập số tín chỉ thực hành");
            }
            else if (txtTongSoTC.Text == "")
            {
                ToastNotification.Show(this, "Nhập tổng tín chỉ nữa là xong!");
            }
            else
            {
                int MaLoaiMon = int.Parse(txtMaLoaiMon.Text);
                string tenmon = txtTenMonHoc.Text;
                int TongTC = int.Parse(txtTongSoTC.Text);
                int TCLT = int.Parse(txtTCLT.Text);
                int TCTH = int.Parse(txtTCTH.Text);

                try
                {
                    MonHoc.ThemMonHoc(txtMaMonHoc.Text, txtTenMonHoc.Text, MaLoaiMon, TongTC, TCLT, TCTH);
                    ToastNotification.Show(this,"Thêm môn "+tenmon+ " thành công");
                }
                catch
                {
                    ToastNotification.Show(this, "Không thể thêm, vui lòng kiểm tra các giá trị nhập!");
                }
            }
        }

        private void btnXoa_Click(object sender, EventArgs e)
        {
            string id = dgvDSMonHoc.CurrentRow.Cells["MaMonHoc"].Value.ToString();
            string tenmon = dgvDSMonHoc.CurrentRow.Cells["TenMonHoc"].Value.ToString();
            if(id!= null)
            {
                try
                {
                    MonHoc.XoaMonHoc(id);
                    ToastNotification.Show(this, "Xóa môn "+tenmon+" thành công");
                }
                catch
                {
                    ToastNotification.Show(this,"Không xóa được!");
                }
            }
            else
            {
                ToastNotification.Show(this, "Vui lòng chọn môn cần xóa!");
            
            }
        }

        private void btnCapNhap_Click(object sender, EventArgs e)
        {
            try
            {
                dgvDSMonHoc.DataSource = MonHoc.LayDSMonHoc();
                bindingMH();
                ToastNotification.Show(this, "Đã cập nhập!");
            }
            catch
            { 
            
            }
        }

        private void btnSua_Click(object sender, EventArgs e)
        {
            if(txtMaMonHoc.Text!=""&&txtTenMonHoc.Text!="")
            {
                int MaLoaiMon = int.Parse(txtMaLoaiMon.Text);
                string tenmon = txtTenMonHoc.Text;
                int TongTC = int.Parse(txtTongSoTC.Text);
                int TCLT = int.Parse(txtTCLT.Text);
                int TCTH = int.Parse(txtTCTH.Text);

                try
                {
                    MonHoc.CapNhapMonHoc(txtMaMonHoc.Text, txtTenMonHoc.Text, MaLoaiMon, TongTC, TCLT, TCTH);
                    ToastNotification.Show(this, "Đã sửa môn " + tenmon + " thành công!");
                }
                catch
                {
                    ToastNotification.Show(this, "Không thể sửa thông tin");
                }
            }
            else
            {
                ToastNotification.Show(this, "Kiểm tra giá trị nhập vào!");
            }
        }

        private void txtTimMon_TextChanged_1(object sender, EventArgs e)
        {
            try
            {
                dgvDSMonHoc.DataSource = TimKiem.TimKiemMonHocTrongDS(txtTimMon.Text);
                bindingMH();
            }
            catch
            {

            }
        }
    }
}
